import validate from '@/common/validate'

export default {
  /**
   * 数字添加分隔符(默认千分位)
   * @param num - 数据源,字符串(数字类型)或数字
   * @param {number} [mulriple=1000] - 默认千分位
   * @param {string} [groupSeparator='-'] 分隔符
   * @return {string} 转换结果
   */
  magnification(num, mulriple = 1000, groupSeparator = ',') {
    // magnification factor
    if (!validate.isNumber(num)) {
      return ''
    }
    // 先找出整数位
    let [num1, num2] = num.toString().split('.')
    const level = String(mulriple).length;
    let res =  num1.toString().replace(new RegExp(`(\\d)(?=(\\d{${level - 1}})+$)`, 'g'), `$1${groupSeparator}`);
    if(num2){
      res+=('.'+num2)
    }
    return res
  },
  /**
   * 对小数四舍五入
   * @param {number} value - 数据源
   * @param {number} {percent = 2} - 保留的位数, 需是自然数
   * @return {string} 返回结果
   */

  toFixed(value, percent = 2) {
    if (validate.isNumber(value)) {
      return Number(value).toFixed(percent)
    } else {
      return ''
    }
  },
  /**
   * 求和,如果参数中存在NaN,null,undefined,Infinity,以及其他无意义的字符串时,将他们视为0
   * @param args
   * @return {number}
   */
  sum(...args) {
    let res = 0
    args.forEach(item => {
      let _num = Number(item)
      res += (validate.isNumber(_num) && !validate.isNaN(_num)) ? _num : 0
    })
    return res
  },
}
